package top.aicey.ai.sparring.biz;

import java.util.Map;

import com.github.pagehelper.PageInfo;

import top.aicey.ai.sparring.dto.enums.SceneStatusEnum;
import top.aicey.ai.sparring.dto.req.SaveSceneRequestDto;
import top.aicey.ai.sparring.dto.res.AdminSceneResponse;
import top.aicey.ai.sparring.dto.res.SceneDetailResponse;
import top.aicey.ai.sparring.dto.res.SceneResponse;

/**
 * @author yangyongping
 * @date 2025-01-14 11:04 下午
 */
public interface ISceneBiz {
    /**
     * 用户侧列表
     * @param moduleId
     * @param pageNumber
     * @param pageSize
     * @return
     */
    PageInfo<SceneResponse> pageQuery(String moduleId, Integer pageNumber, Integer pageSize);

    /**
     * 管理侧列表
     * @param moduleId
     * @param pageNumber
     * @param pageSize
     * @param params
     * @return
     */
    PageInfo<AdminSceneResponse> pageAdminQuery(String moduleId, Integer pageNumber, Integer pageSize, Map<String, Object> params);

    /**
     * 场景陪练次数增加
     * @param sceneId
     */
    void numAdd(Long sceneId);

    /**
     * 检查场景是否存在
     * @param id
     * @return
     */
    Boolean exists(Long id);

    /**
     * 通过id删除
     * @param id
     */
    Boolean removeById(Long id);

    /**
     * 新增场景
     * @param moduleId
     * @param userId
     * @param dto
     * @return
     */
    Long save(String moduleId, String userId, SaveSceneRequestDto dto);

    /**
     * 状态变更
     * @param sceneId
     * @param statusEnum
     * @param moduleId
     * @param userId
     * @return
     */
    boolean statusChange(Long sceneId, SceneStatusEnum statusEnum, String moduleId, String userId);

    /**
     * 更新
     * @param moduleId
     * @param userId
     * @param dto
     * @return
     */
    boolean updateById(String moduleId, String userId, SaveSceneRequestDto dto);

    /**
     * 详情
     * @param moduleId
     * @param id
     * @return
     */
    SceneDetailResponse listDetailBySceneId(String moduleId, Long id);

}
